# 本文件是app包的初始化文件，用于创建app对象，注册蓝图，导入配置，创建数据库对象等操作
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
from flask_pymongo import PyMongo
from flask_cors import CORS  # 导入 CORS
from config import Config
from utils import respond, ERRORCODES
from server_cors_fix import setup_cors

app = Flask(
    __name__,
    static_folder="static",
    static_url_path="/static",
    template_folder="templates",
)  # 创建app

# 配置 CORS
CORS(app, resources={r"/*": {"origins": "*"}})  # 允许所有来源的跨域请求，生产环境应该限制来源

# 导入配置
app.config.from_object(Config)

# 创建数据库对象
db = SQLAlchemy(app)
db_mongo = PyMongo(app).db


@app.route("/")
def index():
    return render_template("index.html")


# 错误处理
@app.errorhandler(415)
def unsupported_media_type_error(error):
    return respond(None, "数据格式不正确。", ERRORCODES.BAD_REQUEST)


@app.errorhandler(404)
def page_not_found(error):
    return respond(None, "页面不存在。", ERRORCODES.NOT_FOUND)


@app.errorhandler(400)
def bad_request(error):
    return respond(None, "请求出错，可能由数据格式有误造成。", ERRORCODES.BAD_REQUEST)
